package com.cy.pj.notice.dao;

import com.cy.pj.notice.pojo.SysNotice;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**文档注释,用于方法和类的上面;
 * 数据模块持久层,借助此对象基于mybatis实现与数据库交互;
 *一般mybati使用mapper注解会底层自动创建实现类
 * 或者自己写接口的实现类,注入SqlSession
 */
@Mapper
public interface SysNoticeDao {
    /**
     * 基于条件查询公告信息
     * @param notice 用于封装查询参数;
     * @return 基于条件查询到的结果;
     */

    List<SysNotice> selectNotice(SysNotice notice);
    /**
     * 基于id删除公告信息
     * @param ids  @Param("id")
     * @return 删除了几行
     * 因为是可变参数,所以需要用数组array来接收,当想使用id名直接替代时需要
     * 使用@Param标记
     */
    int deleteById(Long... ids);

    /**
     * 持久化otice对象参数
     * @param notice(封装了要写入的数据)
     * @return返回写入的行数;
     */

    int insertNotice(SysNotice notice);

    /**
     * 基于id查询notice对象
     * @param id 公告唯一标识id
     * @return 基于id查询到的结果;
     * 简单映射语句直接写在接口方法上,复杂sql写道xml映射文件;
     */
    @Select("select * From sys_notices where id = #{id}")
    SysNotice findById(Long id);


    /**
     * 持久化notice对象
     * @param notice 封装了要更新的数据对象
     * @return 返回更新的行数;
     */
    int updateNotice(SysNotice notice);
}
